home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / perl5 / IO / Compress / Adapter / Deflate.pm next >
Encoding:
Perl POD Document  |  2008-09-03  |  2.7 KB  |  166 lines

  1. package IO::Compress::Adapter::Deflate ;
  2.  
  3. use strict;
  4. use warnings;
  5. use bytes;
  6.  
  7. use IO::Compress::Base::Common  2.015 qw(:Status);
  8.  
  9. use Compress::Raw::Zlib  2.015 qw(Z_OK Z_FINISH MAX_WBITS) ;
  10. our ($VERSION);
  11.  
  12. $VERSION = '2.015';
  13.  
  14. sub mkCompObject
  15. {
  16.     my $crc32    = shift ;
  17.     my $adler32  = shift ;
  18.     my $level    = shift ;
  19.     my $strategy = shift ;
  20.  
  21.     my ($def, $status) = new Compress::Raw::Zlib::Deflate
  22.                                 -AppendOutput   => 1,
  23.                                 -CRC32          => $crc32,
  24.                                 -ADLER32        => $adler32,
  25.                                 -Level          => $level,
  26.                                 -Strategy       => $strategy,
  27.                                 -WindowBits     => - MAX_WBITS;
  28.  
  29.     return (undef, "Cannot create Deflate object: $status", $status) 
  30.         if $status != Z_OK;    
  31.  
  32.     return bless {'Def'        => $def,
  33.                   'Error'      => '',
  34.                  } ;     
  35. }
  36.  
  37. sub compr
  38. {
  39.     my $self = shift ;
  40.  
  41.     my $def   = $self->{Def};
  42.  
  43.     my $status = $def->deflate($_[0], $_[1]) ;
  44.     $self->{ErrorNo} = $status;
  45.  
  46.     if ($status != Z_OK)
  47.     {
  48.         $self->{Error} = "Deflate Error: $status"; 
  49.         return STATUS_ERROR;
  50.     }
  51.  
  52.     return STATUS_OK;    
  53. }
  54.  
  55. sub flush
  56. {
  57.     my $self = shift ;
  58.  
  59.     my $def   = $self->{Def};
  60.  
  61.     my $opt = $_[1] || Z_FINISH;
  62.     my $status = $def->flush($_[0], $opt);
  63.     $self->{ErrorNo} = $status;
  64.  
  65.     if ($status != Z_OK)
  66.     {
  67.         $self->{Error} = "Deflate Error: $status"; 
  68.         return STATUS_ERROR;
  69.     }
  70.  
  71.     return STATUS_OK;    
  72.     
  73. }
  74.  
  75. sub close
  76. {
  77.     my $self = shift ;
  78.  
  79.     my $def   = $self->{Def};
  80.  
  81.     $def->flush($_[0], Z_FINISH)
  82.         if defined $def ;
  83. }
  84.  
  85. sub reset
  86. {
  87.     my $self = shift ;
  88.  
  89.     my $def   = $self->{Def};
  90.  
  91.     my $status = $def->deflateReset() ;
  92.     $self->{ErrorNo} = $status;
  93.     if ($status != Z_OK)
  94.     {
  95.         $self->{Error} = "Deflate Error: $status"; 
  96.         return STATUS_ERROR;
  97.     }
  98.  
  99.     return STATUS_OK;    
  100. }
  101.  
  102. sub deflateParams 
  103. {
  104.     my $self = shift ;
  105.  
  106.     my $def   = $self->{Def};
  107.  
  108.     my $status = $def->deflateParams(@_);
  109.     $self->{ErrorNo} = $status;
  110.     if ($status != Z_OK)
  111.     {
  112.         $self->{Error} = "deflateParams Error: $status"; 
  113.         return STATUS_ERROR;
  114.     }
  115.  
  116.     return STATUS_OK;   
  117. }
  118.  
  119.  
  120.  
  121. #sub total_out
  122. #{
  123. #    my $self = shift ;
  124. #    $self->{Def}->total_out();
  125. #}
  126. #
  127. #sub total_in
  128. #{
  129. #    my $self = shift ;
  130. #    $self->{Def}->total_in();
  131. #}
  132.  
  133. sub compressedBytes
  134. {
  135.     my $self = shift ;
  136.  
  137.     $self->{Def}->compressedBytes();
  138. }
  139.  
  140. sub uncompressedBytes
  141. {
  142.     my $self = shift ;
  143.     $self->{Def}->uncompressedBytes();
  144. }
  145.  
  146.  
  147.  
  148.  
  149. sub crc32
  150. {
  151.     my $self = shift ;
  152.     $self->{Def}->crc32();
  153. }
  154.  
  155. sub adler32
  156. {
  157.     my $self = shift ;
  158.     $self->{Def}->adler32();
  159. }
  160.  
  161.  
  162. 1;
  163.  
  164. __END__
  165.  
  166.